package com.example.gobang.manager;

import com.example.gobang.model.UserInfo;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;

import java.util.concurrent.ConcurrentHashMap;

@Component
public class OnlineUserManager {
    // 用于存储在线用户
    // 考虑到用户可能使用多个设备进行登录（多开）, 使用 ConcurrentHashMap 存储用户的在线状态
    private ConcurrentHashMap<Integer, WebSocketSession> hallMap = new ConcurrentHashMap<>();
    private ConcurrentHashMap<Integer, WebSocketSession> roomMap = new ConcurrentHashMap<>();

    // 用户进入大厅,将用户信息存储在 map 中
    public void enterGameHall(int userId, WebSocketSession session) {
        hallMap.put(userId, session);
    }

    // 用户退出大厅，将 map 中存储的信息删除
    public void exitGameHall(int userId) {
        hallMap.remove(userId);
    }

    // 获取 map 中存储的用户信息
    public WebSocketSession getFromHall(int userId) {
        return hallMap.get(userId);
    }

    // 用户进入游戏房间
    public void enterGameRoom(int userId, WebSocketSession session) {
        roomMap.put(userId, session);
    }
    // 用户退出房间
    public void exitGameRoom(int userId) {
        roomMap.remove(userId);
    }
    // 获取用户西悉尼
    public WebSocketSession getFromRoom(int userId) {
        return roomMap.get(userId);
    }
}
